﻿#pragma once
#include "core/Macro.h"

namespace Engine
{
	class ENGINE_API Texture
	{
	public:
		virtual ~Texture() = default;

		[[nodiscard]] virtual uint32_t GetWidth() const = 0;
        [[nodiscard]] virtual uint32_t GetHeight() const = 0;

        virtual void Bind(uint32_t slot = 0) const = 0;
	};

    class ENGINE_API Texture2D : public Texture
    {
    public:
        static Ref<Texture2D> Create(const std::string& path);
        static Ref<Texture2D> Create(int width, int height);
    };	
}
